# -*- coding: cp1252 -*-

# HA UM BUG NO MOVIMENTO DA COBRA, QUANDO SE APERTA
# TRES TECLAS DE UMA VEZ SOH ELA PERDE UMA VIDA!!!!

import pygame,sys,os
from pygame.locals import *

pygame.init()

class Snake:
    def __init__(self):
        self.imagem_vida = pygame.image.load('Imagens'+ os.sep + 'imagem_vida.png')
        self.xs = [290, 290, 290, 290, 290]         # lista de posicoes de blitagens do corpo
        self.ys = [290, 270, 250, 230, 210]
        self.num_vidas = 3
        self.imagem_cabeca1 = pygame.image.load('Imagens' + os.sep + 'imagem_cabeca1.png').convert_alpha() # para cima
        self.imagem_cabeca2 = pygame.image.load('Imagens' + os.sep + 'imagem_cabeca2.png').convert_alpha() # para direita
        self.imagem_cabeca3 = pygame.image.load('Imagens' + os.sep + 'imagem_cabeca3.png').convert_alpha() # para baixo
        self.imagem_cabeca4 = pygame.image.load('Imagens' + os.sep + 'imagem_cabeca4.png').convert_alpha() # para esquerda
        self.imagem_corpo = pygame.image.load('Imagens'+ os.sep + 'corpo_cobra.png').convert_alpha()

    def colidir(self,x1,x2,y1,y2,w1,w2,h1,h2):  
        if x1+w1 > x2 and x1 < x2+w2 and y1+h1 > y2 and y1 < y2+h2:
            return True
        else:
            return False

    def morrer(self,screen,score,Persistencia):
        if self.num_vidas == 0:
            Persistencia.fazer_persistencia(score)
            Persistencia.desenhar_imagem_recordes()
            pygame.display.update()
            pygame.time.wait(2000)
            sys.exit(0)  # 0 eh padrao
        else:
            self.num_vidas -= 1
            pygame.time.wait(1000)
            self.xs = [290, 290, 290, 290, 290]
            self.ys = [290, 270, 250, 230, 210]
            
    def escolher_imagem_corpo(self,dirs):
        if dirs == 0:
            return self.imagem_cabeca3
        elif dirs == 1:
            return self.imagem_cabeca2
        elif dirs == 2:
            return self.imagem_cabeca1
        elif dirs == 3:
            return self.imagem_cabeca4
            

    def aparecer_imagem_cobra(self):
        img_cobra = self.imagem_corpo
        return img_cobra

    def verificar_colisao_comida(self,Comida):    
        return (Comida.mapa_comidas[str(Comida)].get_rect(center=(Comida.posicao[0]+10,Comida.posicao[1]+10))).colliderect(self.aparecer_imagem_cobra().get_rect(center=(self.xs[0]+10,self.ys[0]+10)))

    def __analisa_cenario(self,Cenario):
        lista_analises = []
        for i in range(len(Cenario.lista_cenarios)):
            if str(Cenario.lista_cenarios[i][0]) == str(Cenario):
                for posicao in Cenario.lista_cenarios[i][1].values()[0]:
                    if ((Cenario.lista_cenarios[i][1].keys()[0]).get_rect(topleft=posicao)).colliderect(self.aparecer_imagem_cobra().get_rect(center=(self.xs[0]+10,self.ys[0]+10))):
                        lista_analises.append(1)
                    else:
                        lista_analises.append(0)
        return lista_analises             
                    
    def verificar_colisao_cenario(self,Cenario):
        if self.__analisa_cenario(Cenario).count(1) > 0:
            return True
        return False   


